<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>非布尔值的与或非运算</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        && || 非布尔值的情况
            - 对于非布尔值进行与或非运算时，
                会先将其转换为布尔值，然后再运算，并且  ⭐返回原值
            - 与运算：
                - 如果第一个值为true，则必然返回第二个值  ⭐
                - 如果第一个值为false，则直接返回第一个值  ⭐
                    如果两个值都为false，则返回靠前的false  ⭐
            - 或运算：
                - 如果第一个值为 true，则直接返回第一个值   ⭐
                - 如果第一个值为 false，则直接返回第二个值  ⭐
    */
    //  ============ 与运算
    // ture && true
    // 与运算：如果两个值都为true，则返回后边的
    let result = 1 && 2;

    //与运算：如果两个值中有false，则返回靠前的false
    // false && true
    result = 0 && 2;
    result = 2 && 0;

    // false && false
    result = NaN && 0;
    result = 0 && NaN;

    console.log("result = "+result);

    // ============= 或运算
    // true || true
    // 如果第一个值为true，则直接返回第一个值
    let a = 1 || 2;
    a = 0 || 1;
    a = 2 || NaN;
    // 如果第一个值为false，则直接返回第二个值
    a = NaN || 1;
    a = NaN || 0;
    a = "" || "hello";
    a = -1 || "你好";
    console.log("a = "+a);

</script>